-
Notifications
You must be signed in to change notification settings - Fork 71
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
参考書籍一覧ページに必読マークを表示する #5674
参考書籍一覧ページに必読マークを表示する #5674
Conversation
1f5c8f9
to
4793853
Compare
@yamatatsu10969 |
@hikarook94 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
app/helpers/books_helper.rb
Outdated
# frozen_string_literal: true | ||
|
||
module BooksHelper | ||
def must_read_for_any_practice?(book) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
must_read_for_any_practice?
だと どんなプラクティスでも必読?
と理解してしまいそうなので、シンプルに must_read?
でも良さそうだと思いました!
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
たしかにメソッド名わかりづらいですね...😓
本とプラクティスの関連を表すpractices_books
テーブルがmust_read
属性を持っていてpractices_books.must_read?
と名前が重複してしまうかなという思いもあり、少し具体的な名前にしたいと考えました。
いずれかのプラクティスで必読?
みたいなメソッド名が良いかと思うのですがいかがでしょうか?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
いずれかのプラクティスで必読?みたいなメソッド名が良いかと思うのですがいかがでしょうか?
そちらでもわかりやすいので良いと思います〜!
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
ありがとうございます〜!
any + 複数形 + ?
で一つでも存在しているか?
となるようにメソッド名を修正しました!
app/helpers/books_helper.rb
Outdated
@@ -0,0 +1,7 @@ | |||
# frozen_string_literal: true | |||
|
|||
module BooksHelper |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
BooksHelper
を作ることで view でのロジックを減らして読みやすくするんですね〜 👍
@@ -2,6 +2,6 @@ | |||
|
|||
class API::BooksController < API::BaseController | |||
def index | |||
@books = Book.with_attached_cover.includes(:practices) | |||
@books = Book.with_attached_cover.includes(%i[practices practices_books]) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
自分が includes
に対する理解が浅いので質問です!
practices_books
を追加した理由を教えていただけると助かります🙏
(ローカルで practices_books
を削除して実行しても特に動作は変わらなかったため。)
includes
の使い方を調査したところN+1問題を解決するために使用されるようですね🧐
https://pikawaka.com/rails/includes
上記の記事を読んだ自分の理解は以下になります。
practices_books
を includes
に指定することで事前に practices_books
を取得できるので、BooksHelper
の book.practices_books
の時にクエリを発行せずに済む。
この理解で合っていますでしょうか?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
質問ありがとうございます!
僕もその理解で追加したのですが、質問をいただいて改めて調べたところBook.with_attached_cover.includes(:practices)
だけでもpractices_books
を取得するクエリが発行されているようなのであまり意味はなかったかもしれません...削除しようかなと思います。
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
そうなんですね!実行までありがとうございます🙏
削除でも大丈夫そうですね!
@yamatatsu10969 |
@hikarook94 |
4793853
to
2ba62ce
Compare
@yamatatsu10969 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
修正ありがとうございました!
LGTMです🚀
@yamatatsu10969 @komagata |
app/helpers/books_helper.rb
Outdated
# frozen_string_literal: true | ||
|
||
module BooksHelper | ||
def must_read_for_any_practices?(book) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Viewでしか使わないのであればDecoratorにするのがいいかもです〜
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
ありがとうございます!Decoratorにしてみました!
ご確認よろしくお願いします🙏
2ba62ce
to
d870b3b
Compare
# frozen_string_literal: true | ||
|
||
module BookDecorator | ||
def must_read_for_any_practices? |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Decoratorに独自のメソッドを追加した場合は対応するテストが欲しい感じです〜
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
テストを追加しました!ご確認よろしくお願いいたします🙏
818ed67
to
086db78
Compare
assert_equal true, @book1.must_read_for_any_practices? | ||
assert_equal false, @book2.must_read_for_any_practices? |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
assert_equal true, @book1.must_read_for_any_practices? | |
assert_equal false, @book2.must_read_for_any_practices? | |
assert @book1.must_read_for_any_practices? | |
assert_not @book2.must_read_for_any_practices? |
trueかどうかのテストはassertがいいと思います〜
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
修正しました!ご確認よろしくお願いいたします!
086db78
to
9588b9f
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
確認させて頂きました。OKです〜🙆♂️
Issue
概要
/books
書籍一覧ページで書籍が何かしらのプラクティスで必読に指定されている場合は必読マークを表示するように変更しました。変更確認方法
feature/display-must-read-mark-in-books
をローカルに取り込むmentormentaro
でログインするhttp://localhost:3000/books
にアクセスするhttp://localhost:3000/practices/199563205/edit
にアクセスするhttp://localhost:3000/books
に再びアクセスする変更前
変更後